👤 API de Usuários - Documentação Completa
📋 Visão Geral
A API de Usuários é responsável por toda a gestão de usuários no sistema CordenaAi, incluindo consulta, verificação de dados, atribuição de funções e gerenciamento de informações pessoais. Esta API permite buscar usuários por diferentes identificadores, verificar dados únicos como CPF e email, consultar funções por contexto e gerenciar informações como nome social.
🎯 Endpoints Disponíveis
📝 Consulta de Usuários
1. GET /api/Usuarios/{identificador}
Obter Usuário por Identificador
- Descrição: Retorna os dados completos de um usuário específico usando ID, email, CPF ou username
- Método: GET
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros:
identificador (path): ID, email, CPF ou username do usuário
- Resposta: Objeto UsuarioReadDto completo
- Uso: Visualização de perfil individual, verificação de dados, integração com outros módulos
2. GET /api/Usuarios
Listar Todos os Usuários
- Descrição: Retorna uma lista completa de todos os usuários cadastrados no sistema
- Método: GET
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros: Nenhum
- Resposta: Array de objetos UsuarioReadDto
- Uso: Dashboards administrativos, relatórios e listagens gerais
🔍 Verificação de Dados
3. GET /api/Usuarios/verificar-cpf/{cpf}
Verificar CPF
- Descrição: Verifica se um CPF já está cadastrado no sistema
- Método: GET
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros:
cpf (path): CPF a ser verificado
- Resposta: Informações sobre a existência do CPF
- Uso: Validação em formulários de cadastro, prevenção de duplicatas
4. GET /api/Usuarios/verificar-email/{email}
Verificar Email
- Descrição: Verifica se um email já está cadastrado no sistema
- Método: GET
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros:
email (path): Email a ser verificado
- Resposta: Informações sobre a existência do email
- Uso: Validação em formulários de cadastro, recuperação de conta
5. GET /api/Usuarios/verificar-celular/{celular}
Verificar Celular
- Descrição: Verifica se um número de celular já está cadastrado no sistema
- Método: GET
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros:
celular (path): Número de celular a ser verificado
- Resposta: Informações sobre a existência do celular
- Uso: Validação em formulários de cadastro, notificações SMS
🎭 Gestão de Funções
6. GET /api/Usuarios/{identificador}/funcoes/{contexto}
Consultar Funções por Contexto
- Descrição: Retorna todas as funções de um usuário em um contexto específico
- Método: GET
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros:
identificador (path): ID, email, CPF ou username do usuário
contexto (path): Contexto das funções (turma, responsavel, aluno)
- Resposta: Array de objetos UsuarioFuncoesDto
- Uso: Verificação de permissões, exibição de papéis do usuário
7. POST /api/Usuarios/{identificador}/atribuir-funcao
Atribuir Função a Usuário
- Descrição: Atribui uma nova função a um usuário em um contexto específico
- Método: POST
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros:
identificador (path): ID, email, CPF ou username do usuário
- Body: Objeto AtribuirFuncaoDto
- Resposta: Confirmação da atribuição
- Uso: Gestão de permissões, atribuição de papéis
📝 Gestão de Informações Pessoais
8. PUT /api/Usuarios/{identificador}/nome-social
Atualizar Nome Social
- Descrição: Atualiza o nome social de um usuário
- Método: PUT
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros:
identificador (path): ID, email, CPF ou username do usuário
- Body: Objeto AtualizarNomeSocialDto
- Resposta: Confirmação da atualização
- Uso: Gestão de identidade, inclusão social
9. GET /api/Usuarios/teste-nome-social/{identificador}
Testar Campo Nome Social
- Descrição: Endpoint para testar e verificar o funcionamento do campo nome social
- Método: GET
- Autenticação: Requerida (JWT Bearer Token)
- Parâmetros:
identificador (path): ID, email, CPF ou username do usuário
- Resposta: Informações detalhadas sobre o campo nome social
- Uso: Testes e validação de funcionalidades
🔧 Modelo de Dados
Estrutura do Usuário
{
"id": "string",
"userName": "string",
"nome": "string",
"nomeSocial": "string",
"email": "string",
"cpf": "string",
"celular": "string",
"dataNascimento": "datetime",
"genero": "string",
"foto": "string",
"status": "boolean",
"dataCadastro": "datetime",
"dataAtualizacao": "datetime"
}
Estrutura de Funções do Usuário
{
"usuarioId": "string",
"usuarioNome": "string",
"contexto": "string",
"funcoes": [
{
"id": "int",
"nome": "string",
"descricao": "string",
"contexto": "string"
}
]
}
Estrutura para Atribuição de Função
{
"funcaoId": "int",
"contexto": "string",
"turmaId": "int"
}
🔐 Autenticação e Autorização
Todos os endpoints requerem:
- JWT Bearer Token no header
Authorization
- Permissões específicas baseadas no tipo de usuário:
- Administradores: Acesso completo a todos os endpoints
- Usuários: Acesso limitado aos próprios dados
- Responsáveis: Acesso aos dados de seus atletas
📊 Casos de Uso Principais
1. Consulta de Usuário por Identificador Flexível
GET /api/Usuarios/[email protected]
Authorization: Bearer {token}
2. Verificação de CPF em Formulário
GET /api/Usuarios/verificar-cpf/123.456.789-00
Authorization: Bearer {token}
3. Consulta de Funções por Contexto
GET /api/Usuarios/user123/funcoes/turma
Authorization: Bearer {token}
4. Atribuição de Função
POST /api/Usuarios/user123/atribuir-funcao
Content-Type: application/json
Authorization: Bearer {token}
{
"funcaoId": 1,
"contexto": "turma",
"turmaId": 5
}
5. Atualização de Nome Social
PUT /api/Usuarios/user123/nome-social
Content-Type: application/json
Authorization: Bearer {token}
{
"nomeSocial": "João"
}
⚠️ Validações e Regras de Negócio
Validações Obrigatórias
- Identificador: Deve ser um ID, email, CPF ou username válido
- CPF: Formato válido, único no sistema
- Email: Formato válido, único no sistema
- Celular: Formato válido, único no sistema
- Nome Social: Opcional, máximo 100 caracteres
Regras de Negócio
- Identificadores Flexíveis: Busca por ID, email, CPF ou username
- Verificação de Unicidade: CPF, email e celular devem ser únicos
- Contextos de Função: turma, responsavel, aluno
- Soft Delete: Usuários inativados não são excluídos permanentemente
- Auditoria: Todas as operações são logadas
🚨 Tratamento de Erros
Códigos de Status HTTP
- 200: Sucesso
- 400: Dados inválidos
- 401: Não autorizado
- 403: Acesso negado
- 404: Usuário não encontrado
- 409: Conflito (CPF/Email já existente)
- 500: Erro interno do servidor
Formato de Erro
{
"error": "string",
"message": "string",
"details": "string",
"timestamp": "datetime"
}
📈 Performance e Limitações
Limitações
- Paginação: Listas retornam máximo 100 registros por página
- Rate Limiting: 1000 requests por hora por usuário
- Timeout: 30 segundos por requisição
Otimizações
- Cache: Dados de usuários são cacheados por 5 minutos
- Índices: Busca otimizada por CPF, email, username e ID
- Compressão: Respostas comprimidas com gzip
🔄 Integração com Outros Módulos
Módulos Relacionados
- Autenticação: Dados de login e permissões
- Responsáveis: Associação com atletas
- Turmas: Funções e papéis em turmas
- Mensagens: Destinatários e remetentes
- Relatórios: Dados para análises
📱 Uso em Aplicações
Web App
- Dashboard administrativo
- Formulários de verificação de dados
- Gestão de permissões e funções
- Relatórios e listagens
Mobile App
- Verificação de dados em tempo real
- Consulta de funções do usuário
- Atualização de informações pessoais
🛠️ Manutenção e Monitoramento
Logs Importantes
- Consultas de usuários por identificador
- Verificações de dados únicos
- Atribuições de funções
- Atualizações de informações pessoais
- Tentativas de acesso não autorizado
Métricas Monitoradas
- Número de consultas por identificador
- Taxa de sucesso das verificações
- Tempo de resposta dos endpoints
- Uso de recursos por endpoint
📚 Exemplos Práticos
Fluxo de Verificação de Dados
- Validação de dados no backend pela própria API
- GET /api/Usuarios/verificar-cpf/{cpf} para verificar CPF
- GET /api/Usuarios/verificar-email/{email} para verificar email
- Retorno das informações de existência
- Cache dos resultados para próximas verificações
Fluxo de Consulta de Funções
- GET /api/Usuarios/{identificador}/funcoes/{contexto} com parâmetros
- Busca do usuário por identificador flexível
- Consulta das funções no contexto específico
- Retorno das funções e papéis do usuário
- Cache dos resultados para próximas consultas
Fluxo de Atribuição de Função
- Validação do usuário e função
- POST /api/Usuarios/{identificador}/atribuir-funcao com dados
- Verificação de relacionamentos necessários
- Atribuição da função no contexto
- Notificação de confirmação
Versão: 1.0
Última Atualização: Outubro de 2025
Responsável: Equipe de Desenvolvimento CordenaAi